/*@author cerimice*/
package Persistencia.Fachada;

import Persistencia.Definicion.OrdenServicio;

import Sistema.Configuracion;
import java.util.logging.Logger;
import javax.persistence.Persistence;
import javax.persistence.EntityManager;

public class OrdenServicioFachada
    {
    private EntityManager   em;
    private String   orden;
    
    public OrdenServicioFachada()
        {
        orden = "";
        }
    
    private EntityManager getEntityManager()
        {return Persistence.createEntityManagerFactory(Sistema.Configuracion.getUnidadDePersistencia()).createEntityManager();}                
    
    public String getClaveOrdenServicio()
        {return orden;}
    
    public boolean agregar(String fechaEntrada,String usuario,String cliente,String servicio,String equipoDescripcion,String equipoMarca,String equipoSerie,String equipoObservaciones,String equipoFalla) throws Exception
        {
        try
            {
            em = getEntityManager();
            em.getTransaction().begin();
                OrdenServicio obj = new OrdenServicio();
                obj.setFechaEntrada(Configuracion.getFormatoFechaCorta().parse(fechaEntrada));
                obj.setUsuario(usuario);
                obj.setCliente(cliente);
                obj.setTipoServicio(servicio);
                obj.setEquipoDescripcion(equipoDescripcion.toUpperCase());
                obj.setEquipoMarca(equipoMarca);
                obj.setEquipoSerie(equipoSerie.toUpperCase());
                obj.setEquipoObservaciones(equipoObservaciones.toUpperCase());
                obj.setEquipoFalla(equipoFalla.toUpperCase());
                obj.setEstado(1);
            em.persist(obj);
            em.flush();
            em.getTransaction().commit();
            em.close();
            orden = obj.getClave();
            return true;
            }
        catch(Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Sistema.Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }
    
    public boolean modificar(String clave,String fechaEntrada,String usuario,String cliente,String servicio,String equipoDescripcion,String equipoMarca,String equipoSerie,String equipoObservaciones,String equipoFalla) throws Exception
        {
        try
            {
            em = getEntityManager();
            em.getTransaction().begin();
                OrdenServicio obj = em.find(OrdenServicio.class,clave);
                if(obj == null){return false;}
                obj.setUsuario(usuario);
                obj.setCliente(cliente);
                obj.setTipoServicio(servicio);
                obj.setEquipoDescripcion(equipoDescripcion);
                obj.setEquipoMarca(equipoMarca);
                obj.setEquipoSerie(equipoSerie);
                obj.setEquipoObservaciones(equipoObservaciones);
                obj.setEquipoFalla(equipoFalla);
            em.persist(obj);
            em.flush();
            em.getTransaction().commit();
            em.close();
            return true;
            }
        catch(Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Sistema.Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }
    
    public boolean modificar(String clave,String fechaSalida) throws Exception
        {
        try
            {
            em = getEntityManager();
            em.getTransaction().begin();
                OrdenServicio obj = em.find(OrdenServicio.class,clave);
                if(obj == null){return false;}
                obj.setFechaSalida(Configuracion.getFormatoFechaCorta().parse(fechaSalida));
            em.persist(obj);
            em.getTransaction().commit();
            em.close();
            return true;
            }
        catch(Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Sistema.Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }
    
    public boolean modificar(String clave,int estado) throws Exception
        {
        try
            {
            em = getEntityManager();
            em.getTransaction().begin();
                OrdenServicio obj = em.find(OrdenServicio.class,clave);
                if(obj == null){return false;}
                obj.setEstado(estado);
            em.persist(obj);
            em.getTransaction().commit();
            em.close();
            return true;
            }
        catch(Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Sistema.Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }
    
    public OrdenServicio obtener(String clave) throws Exception
        {
        try
            {
            em = getEntityManager();
            em.getTransaction().begin();
            em.flush();
            OrdenServicio obj = em.find(OrdenServicio.class,clave);
            em.getTransaction().commit();
            em.close();
            return obj;
            }
        catch(Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Sistema.Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }    
    }
